package com.alibaba.algo.dao.user;

import com.alibaba.algo.cooperation.feign.vo.req.SelectEmployeeListQeqVO;
import com.alibaba.algo.cooperation.feign.vo.req.SelectUserLabelReqVO;
import com.alibaba.algo.cooperation.feign.vo.res.OrgLabelUserInfoResVO;
import com.alibaba.algo.cooperation.feign.vo.res.UserInfoResVO;
import com.alibaba.algo.cooperation.usercomponent.vo.req.user.OrgLabelPageVO;
import com.alibaba.algo.core.base.BaseMapper;
import com.alibaba.algo.entity.user.SysLabel;
import com.alibaba.algo.entity.user.SysOrgLabelDetail;
import com.alibaba.algo.entity.user.SysOrgLabelList;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * SysLabelMapper
 *
 * @author Songtinghua
 * @create 2021-10-29 12:45
 **/
public interface SysLabelMapper extends BaseMapper<SysLabel> {

    /**
     * 根据标签查询
     *
     * @param labelCode 标签编码
     * @return SysLabel
     */
    SysLabel selectByLabelCode(@Param("labelCode") String labelCode);

    /**
     * 根据标签查询数量
     *
     * @param labelCode 标签编码
     * @return integer
     */
    Integer selectCountByLabelCode(@Param("labelCode") String labelCode);

    /**
     * 根据id删除
     *
     * @param id 岗位标签id
     * @return int
     */
    int deleteLabelById(@Param("id") Long id);

    /**
     * 查询岗位标签详情界面信息
     *
     * @param id SysLabel id
     * @return list
     */
    List<SysOrgLabelDetail> selectDetailById(@Param("id") Long id);

    /**
     * 列表分页查询
     *
     * @param obj   query condition
     * @param start start
     * @param end   end
     * @return list
     */
    List<SysOrgLabelList> selectByPage(@Param("obj") OrgLabelPageVO obj, @Param("start") int start, @Param("end") int end);

    /**
     * 列表查询数量
     *
     * @param obj query condition
     * @return int
     */
    Integer count(@Param("obj") OrgLabelPageVO obj);

    /**
     * 查询全部标签信息
     *
     * @param start start
     * @param end   end
     * @return list
     */
    List<SysLabel> selectAllLabel(@Param("start") int start, @Param("end") int end);

    /**
     * 查询全部标签数量
     *
     * @return count
     */
    Integer selectAllLabelCount();

    /**
     * 根据对应组织标签下的人员信息
     *
     * @param obj   查询条件
     * @param start start
     * @param end   end
     * @return list
     */
    List<OrgLabelUserInfoResVO> selectUserByOrgLabel(@Param("obj") SelectEmployeeListQeqVO obj, @Param("start") int start, @Param("end") int end);


    /**
     * 根据对应组织标签下的人员信息数量
     *
     * @param obj 查询条件
     * @return list
     */
    Integer selectUserCountByOrgLabel(@Param("obj") SelectEmployeeListQeqVO obj);

    List<UserInfoResVO> getUsersByLable(@Param("obj")SelectUserLabelReqVO vo);
}

